Skip to content

[node] - Install pnpm as non-root user to prevent root-owned npm cache#1625

Open
brianhelba wants to merge 1 commit intodevcontainers:mainfrom
brianhelba:node-root
Open

[node] - Install pnpm as non-root user to prevent root-owned npm cache#1625
brianhelba wants to merge 1 commit intodevcontainers:mainfrom
brianhelba:node-root

Conversation

@brianhelba
Copy link
Copy Markdown

Currently, the pnpm installation block runs npm install -g pnpm in a bare subshell as root, unlike every other npm/nvm operation in the script which uses su ${USERNAME}. This causes the npm cache directory to be created owned by root:root, leading to EACCES errors for the non-root user on subsequent npm operations.

This is particularly reproducible on macOS with Rosetta 2 emulation, where the cache directory may not already exist from prior steps.

Note, the explicit setting of proxy env vars (http_proxy, https_proxy, no_proxy) is likely a workaround for npm/cli#6835. No other commands in this script use that workaround anymore, so this change uses the same su syntax as all other commands.

Copy link
Copy Markdown
Contributor

@Kaniska244 Kaniska244 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @brianhelba

Thank you for the contribution. Would you kindly bump the node feature version.

Currently, the pnpm installation block runs `npm install -g pnpm` in
a bare subshell as root, unlike every other npm/nvm operation in the
script which uses `su ${USERNAME}`. This causes the npm cache directory
to be created owned by `root:root`, leading to `EACCES` errors for the
non-root user on subsequent npm operations.

This is particularly reproducible on macOS with Rosetta 2 emulation,
where the cache directory may not already exist from prior steps.

Note, the explicit setting of proxy env vars (`http_proxy`, `https_proxy`,
`no_proxy`) is likely a workaround for npm/cli#6835.
No other commands in this script use that workaround anymore, so this change
uses the same `su` syntax as all other commands.
@brianhelba
Copy link
Copy Markdown
Author

@Kaniska244 Done. This is simply a bugfix and doesn't add or remove features, so I bumped the patch version.

@brianhelba brianhelba requested a review from Kaniska244 April 20, 2026 22:41
Copy link
Copy Markdown
Contributor

@Kaniska244 Kaniska244 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be further reviewed by maintainers.

@Kaniska244
Copy link
Copy Markdown
Contributor

@brianhelba please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.

@microsoft-github-policy-service agree [company="{your company}"]

Options:

  • (default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
@microsoft-github-policy-service agree
  • (when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.
@microsoft-github-policy-service agree company="Microsoft"

Contributor License Agreement

Hi @brianhelba

Would you please accept the above license agreement.

@brianhelba
Copy link
Copy Markdown
Author

@Kaniska244 Sorry, I'm awaiting approval from my employer. I'm hoping this will be quick.

@brianhelba
Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Kitware, Inc."

@brianhelba
Copy link
Copy Markdown
Author

@Kaniska244 All done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants